a11y: Update the labelled-by relation of GtkTreeExpander
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 21 Apr 2021 10:43:16 +0000 (11:43 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 21 Apr 2021 10:43:16 +0000 (11:43 +0100)
Whenever we change the :child property, we need to update the
labelled-by relation.

gtk/gtktreeexpander.c

index fb23f6433dd69c436420a26ae35868b14210d782..4ebc072236cb5d52f5e94818e8532c58ad958a0c 100644 (file)
@@ -211,10 +211,6 @@ gtk_tree_expander_update_for_list_row (GtkTreeExpander *self)
                                            -1);
             }
 
-          gtk_accessible_update_relation (GTK_ACCESSIBLE (self),
-                                          GTK_ACCESSIBLE_RELATION_LABELLED_BY, self->child, NULL,
-                                          -1);
-
           child = gtk_widget_get_prev_sibling (self->expander);
         }
       else
@@ -728,6 +724,14 @@ gtk_tree_expander_set_child (GtkTreeExpander *self,
     {
       self->child = child;
       gtk_widget_set_parent (child, GTK_WIDGET (self));
+
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (self),
+                                      GTK_ACCESSIBLE_RELATION_LABELLED_BY, self->child, NULL,
+                                      -1);
+    }
+  else
+    {
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_RELATION_LABELLED_BY);
     }
 
   g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CHILD]);